class Watcher {
    constructor(vm, key, callback) {
        this.vm = vm
        this.key = key  // data 中的属性名称
        this.callback = callback  // 负责更新视图

        // 记录当前 watcher 对象到 Dep类 的静态属性 target
        Dep.target = this
        // 触发 get 方法，在get 中调用 addSub

        this.oldValue = vm[key]  // 此处属性访问 触发了 get

        Dep.target = null
    }

    update () {
        let newValue = this.vm[this.key]   // 更新后的值
        if (this.oldValue === newValue) return
        this.callback(newValue)
    }

}